package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/check-if-the-number-is-fascinating/'>判断一个数是否迷人(Check if The Number is Fascinating)</a>
 * <p>给你一个三位数整数 n 。</p>
 * <p>
 * 如果经过以下修改得到的数字 恰好 包含数字 1 到 9 各一次且不包含任何 0 ，那么我们称数字 n 是 迷人的 ：
 *     <ul>
 *         <li>将 n 与数字 2 * n 和 3 * n 连接 。</li>
 *     </ul>
 * </p>
 * <p>如果 n 是迷人的，返回 true，否则返回 false 。</p>
 * <p>连接 两个数字表示把它们首尾相接连在一起。比方说 121 和 371 连接得到 121371 。</p>
 *
 * <p>
 * <b>示例</b>
 * <pre>
 * 示例 1：
 *      输入：n = 192
 *      输出：true
 *      解释：我们将数字 n = 192 ，2 * n = 384 和 3 * n = 576 连接，得到 192384576 。这个数字包含 1 到 9 恰好各一次。
 *
 * 示例 2：
 *      输入：n = 100
 *      输出：false
 *      解释：我们将数字 n = 100 ，2 * n = 200 和 3 * n = 300 连接，得到 100200300 。这个数字不符合上述条件。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 *  <ul>
 *      <li>100 <= n <= 999</li>
 *  </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/23 11:48
 */
public class LC2729CheckIfTheNumberIsFascinating_S {
    static class Solution {
        public boolean isFascinating(int n) {
            int[] cnt = new int[10];
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append(n);
            stringBuilder.append(n * 2);
            stringBuilder.append(n * 3);
            for (char c : stringBuilder.toString().toCharArray()) {
                ++cnt[c - '0'];
            }
            if (cnt[0] != 0) {
                return false;
            }
            for (int i = 1; i < cnt.length; i++) {
                if (cnt[i] != 1) {
                    return false;
                }
            }
            return true;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.isFascinating(192));
        System.out.println(solution.isFascinating(100));
    }
}
